<?php

/**
 * Partido form.
 *
 * @package    ehockey
 * @subpackage form
 * @author     Your name here
 * @version    SVN: $Id: sfDoctrineFormTemplate.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */



class PartidoForm extends BasePartidoForm
{
	private $continuar;

	public function configure()
	{
		$this->widgetSchema['torneo_id'] = new sfWidgetFormInputHidden();
		$this->widgetSchema['nro_fecha'] = new sfWidgetFormInputHidden();
		$this->widgetSchema['nro_rueda'] = new sfWidgetFormInputHidden();
		$this->widgetSchema['fecha'] = new sfWidgetFormInputHidden();
		$this->widgetSchema['local_id'] = new sfWidgetFormInputHidden();
		$this->widgetSchema['visitante_id'] = new sfWidgetFormInputHidden();;
		$this->widgetSchema['resultado_local']->setAttribute('class', 'small_input');
		$this->widgetSchema['resultado_visitante']->setAttribute('class', 'small_input');
		$this->widgetSchema['resultado_corregido_local'] = new sfWidgetFormInputHidden();
		$this->widgetSchema['resultado_corregido_visitante'] = new sfWidgetFormInputHidden();
		
		$this->widgetSchema['observaciones']->setAttribute('style', 'width: 100%');

		
		$this->validatorSchema['resultado_local'] = new sfValidatorInteger(array('required' => false, 'min' => 0), array('min' => 'Valor invalido', 'invalid' => 'Valor invalido'));
		$this->validatorSchema['resultado_visitante'] = new sfValidatorInteger(array('required' => false, 'min' => 0), array('min' => 'Valor invalido', 'invalid' => 'Valor invalido'));
		
		$this->continuar = isset($_REQUEST['continue']);
		
if (!$this->continuar) {
		$this->validatorSchema['dt_local'] = new sfValidatorAnd(array(
		$this->validatorSchema['dt_local'],
		new sfValidatorString(array('max_length' => 50, 'required' => true)),
		));
			
		$this->validatorSchema['capitan_local'] = new sfValidatorAnd(array(
			$this->validatorSchema['capitan_local'],
			new sfValidatorString(array('max_length' => 50, 'required' => true)),
		));

		$this->validatorSchema['pf_local'] = new sfValidatorAnd(array(
			$this->validatorSchema['pf_local'],
			new sfValidatorString(array('max_length' => 50, 'required' => true)),
		));
		
		$this->validatorSchema['medico_local'] = new sfValidatorAnd(array(
			$this->validatorSchema['medico_local'],
			new sfValidatorString(array('max_length' => 50, 'required' => true)),
		));
		
		$this->validatorSchema['juez_de_mesa_local'] = new sfValidatorAnd(array(
			$this->validatorSchema['juez_de_mesa_local'],
			new sfValidatorString(array('max_length' => 50, 'required' => true)),
		));
		
		$this->validatorSchema['arbitro_local'] = new sfValidatorAnd(array(
			$this->validatorSchema['arbitro_local'],
			new sfValidatorString(array('max_length' => 50, 'required' => true)),
		));
		
		$this->validatorSchema['dt_visitante'] = new sfValidatorAnd(array(
			$this->validatorSchema['dt_visitante'],
			new sfValidatorString(array('max_length' => 50, 'required' => true)),
		));
		
		$this->validatorSchema['capitan_visitante'] = new sfValidatorAnd(array(
			$this->validatorSchema['capitan_visitante'],
			new sfValidatorString(array('max_length' => 50, 'required' => true)),
		));

		
		$this->validatorSchema['pf_visitante'] = new sfValidatorAnd(array(
			$this->validatorSchema['pf_visitante'],
			new sfValidatorString(array('max_length' => 50, 'required' => true)),
		));
		
		$this->validatorSchema['medico_visitante'] = new sfValidatorAnd(array(
			$this->validatorSchema['medico_visitante'],
			new sfValidatorString(array('max_length' => 50, 'required' => true)),
		));
		
		$this->validatorSchema['juez_de_mesa_visitante'] = new sfValidatorAnd(array(
			$this->validatorSchema['juez_de_mesa_visitante'],
			new sfValidatorString(array('max_length' => 50, 'required' => true)),
		));
		
		$this->validatorSchema['arbitro_visitante'] = new sfValidatorAnd(array(
			$this->validatorSchema['arbitro_visitante'],
			new sfValidatorString(array('max_length' => 50, 'required' => true)),
		));

}

		if(!$this->isNew()) {

			// Nos aseguramos de que existen
			$this->object->getJugadoresLocales();
			$this->object->getJugadoresVisitantes();
			
			for ($i = 0; $i< 5; $i++) {
				$this->object->JugadoresLocalesNoFichados[] = new JugadorDePartidoNoFichadoLocal();
				$this->object->JugadoresVisitantesNoFichados[] = new JugadorDePartidoNoFichadoVisitante();	
				$jugador = new JugadorDePartidoLocal();
				$jugador->jugo = false;
//				$this->object->JugadoresLocales[] = $jugador;	
				$jugador = new JugadorDePartidoVisitante();
				$jugador->jugo = false;
//				$this->object->JugadoresVisitantes[] = $jugador;	
				
			}

//			foreach ($this->object->JugadoresLocalesNoFichados as $jugadorNoFichado):
//				$jugadorNoFichado->setPartido($this->object);
//			endforeach;
//
//			foreach ($this->object->JugadoresVisitantesNoFichados as $jugadorNoFichado):
//				$jugadorNoFichado->setPartido($this->object);
//			endforeach;

			
			$params = array(array('partido' => $this->object));
			//$params2 = array(array('JugadorDePartidoLocalNoFichado' => $this->object->JugadoresVisitantesNoFichados[0]));
			$this->embedRelation('JugadoresLocales', null, $params);
			$this->embedRelation('JugadoresVisitantes', null, $params);
			$this->embedRelation('JugadoresLocalesNoFichados',null, $params);
			$this->embedRelation('JugadoresVisitantesNoFichados',null, $params);
			
				
if (!$this->continuar) {
			$this->mergePostValidator(new GoleadoresPartidoValidator(array('resultado' => 'resultado_local', 'goleadores' => 'goleadores_local' ), array('invalid' => 'Los goles del equipo local no coinciden con la cantidad de goleadores')));
			$this->mergePostValidator(new GoleadoresPartidoValidator(array('resultado' => 'resultado_visitante', 'goleadores' => 'goleadores_visitante'), array('invalid' => 'Los goles del visitante no coinciden con la cantidad de los goleadores')));
				
			$this->mergePostValidator(new GoleadorJugoValidator(array('jugadores' => 'JugadoresLocales','jugadores_no_fichados' => 'JugadoresLocalesNoFichados', 'goles' => 'goleadores_local'), array('invalid' => 'Los goleadores del equipo local no son jugadores cargados en la planilla')));
			$this->mergePostValidator(new GoleadorJugoValidator(array('jugadores' => 'JugadoresVisitantes','jugadores_no_fichados' => 'JugadoresVisitantesNoFichados', 'goles' => 'goleadores_visitante'), array('invalid' => 'Los goleadores del equipo visitante no son jugadores cargados en la planilla')));
				
			$this->mergePostValidator(new CantidadJugadoresValidator(array('jugadores' => 'JugadoresLocales','jugadores_no_fichados' => 'JugadoresLocalesNoFichados'), array('invalid' => 'La cantidad de jugadores locales que participaron no supera la minima')));
			$this->mergePostValidator(new CantidadJugadoresValidator(array('jugadores' => 'JugadoresVisitantes','jugadores_no_fichados' => 'JugadoresVisitantesNoFichados'), array('invalid' => 'La cantidad de jugadores visitantes que que participaron no supera la minima')));
			
			$this->mergePostValidator(new CapitanEsJugadorValidator(array('jugadores' => 'JugadoresLocales','jugadores_no_fichados' => 'JugadoresLocalesNoFichados', 'capitan' => 'capitan_local'), array('invalid' => 'El capitan del equipo local no es un jugador cargado en la planilla.')));
			$this->mergePostValidator(new CapitanEsJugadorValidator(array('jugadores' => 'JugadoresVisitantes','jugadores_no_fichados' => 'JugadoresVisitantesNoFichados', 'capitan' => 'capitan_visitante'), array('invalid' => 'El capitan del equipo visitante no es un jugador cargado en la planilla.')));
//			
			$this->mergePostValidator(new CamisetasJugadoresValidator(array('jugadores' => 'JugadoresLocales','jugadores_no_fichados' => 'JugadoresLocalesNoFichados'), array('invalid' => 'Se repiten los numeros de camiseta en algunos jugadores locales agregados')));
			$this->mergePostValidator(new CamisetasJugadoresValidator(array('jugadores' => 'JugadoresVisitantes','jugadores_no_fichados' => 'JugadoresVisitantesNoFichados'), array('invalid' => 'Se repiten los numeros de camiseta en algunos jugadores visitantes agregados')));
////			
//			
			//$this->mergePostValidator();
}				
		}
	}

	protected function doUpdateObject($values) {
		parent::doUpdateObject($values);
		$this->continuar = isset($_REQUEST['continue']);
		if(!$this->continuar) {
			$this->getObject()->setEstado(Partido::ESTADO_PendienteVerificacion);	
		}
		else
		{
			$this->getObject()->setEstado(Partido::ESTADO_PlanillaAbierta);
		}
	}
	
	public function isContinuar(){
		return $this->continuar;
	}
}
